class Comunicacion < ActiveRecord::Base
	set_table_name :comunicaciones

	belongs_to	:contacto
	belongs_to	:user
	belongs_to  :cuenta
		
	validates_presence_of :titulo
	validates_presence_of :contacto
	
	# Verifica que el usuario tenga el rol necesario para acceder a la aplicacion
	def self.get_mod_comunicacion(user)
		if user.role_user.descripcion != 'Invitado' then
			return true
		else
	  	return false 
		end		
	end
	
	# Devuelve los contactos asociados a una cuenta en particular
	def self.listas_contactos(cuenta)
		@contactos_ids = Comunicacion.find(:all, :conditions => ['cuenta_id = ?',cuenta.id] ).collect(&:contacto_id)
		@contactos = Contacto.find(:all, :conditions => ['id in (?)',@contactos_ids])
		@contactos = @contactos.uniq   
	end
	
	# Devuelve las cuentas relacionadas con todos los posicionamientos y todos los ingresos
	def self.listas_cuentas_pos_ing()	
		@cuentas_pos = Posicionamiento.find(:all).collect(&:cuenta) 
		@cuentas_ing = Ingreso.find(:all).collect(&:cuenta) 
		@cuentas = @cuentas_ing + @cuentas_pos 
		@cuentas = @cuentas.uniq 	
	end

	# Devuelve las cuentas relacionadas con todas las ventas y los ingresos
	def self.listas_cuentas_ven_ing()	
		@cuentas_ven = Venta.find(:all).collect(&:cuenta) 
		@cuentas_ing = Ingreso.find(:all).collect(&:cuenta) 
		@cuentas = @cuentas_ven + @cuentas_ing 
		@cuentas = @cuentas.uniq 	
	end

	# Busca todas las comunicaciones relacionadas con una venta o un ingreso, paginando el resultado.
	def self.search_cuenta(page, cuenta_id)
		paginate :per_page => 5, :page => page,
		         :order => 'fecha DESC', :conditions => ['cuenta_id = '+cuenta_id+' AND (type = "Venta" OR type = "Ingreso")']
	end

	# Busca todas las comunicaciones de un cierto tipo, paginando el resultado.
	def self.search_tipo(page, tipo)
		paginate :per_page => 5, :page => page,
		         :order => 'fecha DESC', :conditions => ['type = '+'"'+tipo+'"']
	end

	# Busca todas las comunicaciones asociadas a un contacto.
	def self.search_con(page, contacto_id)
		paginate :per_page => 3, :page => page,
		         :order => 'fecha DESC', :conditions => ['contacto_id = '+contacto_id]
	end

	# Busca todas las comunicaciones asociadas a un contacto con su historial.
	def self.search_con_hist(page, contacto_id)
		paginate :per_page => 6, :page => page,
		         :order => 'type', :conditions => ['contacto_id = '+contacto_id]
	end

	# Busca todas las comunicaciones asociadas a una cuenta.
	def self.search(page, cuenta_id)
		paginate :per_page => 3, :page => page,
		         :order => 'fecha DESC', :conditions => ['cuenta_id = '+cuenta_id]
	end	
	
	# Busca todas las comunicaciones asociadas a una venta o un ingreso.
	def self.search_fin(page)
	  venta = 'Venta'
	  ingreso = 'Ingreso'
		paginate :per_page => 5, :page => page,
		         :order => 'fecha DESC',:conditions => ["type = 'Venta' OR type = 'Ingreso'"] 
	end	
		
	def get_form_html_id 
		''
	end
	
	def get_name 
		'fixme'
	end 

end
